package ioperations;

import book.Book;
import book.BookList;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-22
 * Time: 9:57
 */
public class BorrowOperation implements IOperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅书籍：");

        Scanner scanner = new Scanner(System.in);
        System.out.printf("请输入你借阅的书名：");
        String name = scanner.nextLine();

        int currentSize = bookList.getUsedSize();

        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);

            if (book.getName().equals(name)) {
                if (book.isBorrowed()) {
                    System.out.println("这本书已经被借出了！");
                    return;
                }
                book.setBorrowed(true);
                System.out.println("借阅成功！");
                return;
            }
        }
        System.out.println("没有你要借阅的这本书....");
    }
}

/*
这个`BorrowOperation`类实现了`IOperation`接口，并提供了`work`方法用于处理书籍借阅的逻辑。以下是该方法逻辑关系的简短分析：

1. **提示用户并接收输入**：
   - 输出提示信息，告知用户正在进行借阅操作。
   - 使用`Scanner`类接收用户输入的要借阅的书名。

2. **遍历书架上的书籍**：
   - 获取书架当前的使用大小（`currentSize`）。
   - 遍历书架上的每一本书，检查书名是否与用户输入的书名匹配。

3. **检查书籍状态并执行借阅**：
   - 如果找到匹配的书名，首先检查该书是否已经被借出。
   - 如果书已经被借出，则输出提示信息并结束方法。
   - 如果书未被借出，将其借阅状态设置为已借出，输出借阅成功的提示信息，并结束方法。

4. **处理未找到书籍的情况**：
   - 如果遍历完书架上的所有书籍都没有找到匹配的书名，则输出提示信息表示没有用户要借阅的这本书。

简而言之，这个类的`work`方法实现了书籍借阅的功能，通过用户输入的书名来查找并尝试借阅书籍，同时确保了同一本书不会被重复借出，并在未找到书籍或书籍已被借出时给出相应的提示。
 */